package com.sl.au.service;

import com.sl.au.entity.*;
import com.sl.au.repository.*;

import java.util.List;
import java.util.Map;

public interface AfterSaleMaintainService extends BaseService {
	MaintainSchemeRepository getRepository();
	
	MaintainItemRepository getRepository1();
	
	MaintainItemDeviceRepository getRepository2();
	
	ContractRepository getContractRepository();

	OptionRepository  getOptionRepository();
	
	DeviceDetailRepository getDeviceDetailRepository();
	/**
     * 通过条件获得维护方案信息
     */
	List<MaintainScheme> getMaintainScheme(int start, int length, String key, String orderName, String dir);

	/**
     * 获得当前维护方案的维护项目信息
     */
	List<MaintainItem> getMaintainItem(int start, int length, String key, String orderName, String dir);

	/**
     * 获得当前设备的维护项目信息
     */
	List<MaintainItemDevice> getMaintainItemDevice(int start, int length, String key, String orderName, String dir);
	/**
	 * 得到所有树节点数据
	 * @return
	 */
	List<Map<String,Object>> getNodeMap(List<Option> options);
	/**
	 * 获得维护方案信息
	 */
	List<MaintainScheme> getPage(int start, int length, String key ,String orderName ,String dir);
	/**
	 * 通过条件获得有维护项目的维护方案信息
	 */
	List<MaintainScheme> getSchemes(int start, int length, String key1, Object o, Object o1);
	/**
	 * 获得所有有维护项目的维护方案信息
	 */
	List<MaintainScheme> getAllSchemes(int start, int length, String key1, Object o, Object o1);
	/**
	 * 获得当前合同的维护项目信息
	 */
	List<MaintainItemDevice> getMaintainPlans(int start, int length, String key, String orderName,String dir);

	/**
	 * 获得合同弹窗数据
	 * @param start
	 * @param length
	 * @param key
	 * @param o
	 * @param o1
	 * @return
	 */
	List<Contract> getAfterSaleContracts(int start, int length, String key, Object o, Object o1);
	
	/**
	 * 获得已通过合同弹窗数据
	 * @param start
	 * @param length
	 * @param key
	 * @param o
	 * @param o1
	 * @return
	 */
	List<Contract> getPassContracts(int start, int length, String key, Object o, Object o1);
	
	/**
	 * 获得合同弹窗数据
	 * @param start
	 * @param length
	 * @param key
	 * @param o
	 * @param o1
	 * @return
	 */
	List<Contract> getAfterSalePage(int start, int length, String key, Object o, Object o1);

	/**
	 * 获得当前项目合同的所有拆分后的泵数据
	 */
	List<DeviceDetail> getAllDetails(int start, int length, String contractId, String orderName, String dir);
	
	/**
	 * 获得当前项目合同的所有拆分后的泵数据条数
	 */
	long getAllDetailsCount(String contractId);
	
	/**
	 * 获得当前项目合同的所有拆分后的有出厂信息的泵数据
	 */
	List<DeviceDetail> getAllPlanDetails(int start, int length, String contractId, String orderName, String dir);
	
	/**
	 * 获得当前项目合同的所有拆分后的有出厂信息的泵数据条数
	 */
	long getAllPlanDetailsCount(String contractId);

	/**
	 * 获得当前项目合同的所有泵
	 */
	List<QuoteDevice> getDevices(String contractId);

	/**
	 * 获得当前设备数量拆分后的条数
	 */
	long getDeviceDetailsCount(String deviceId);

	/**
	 * 初始化当前合同设备信息
	 */
	void initialDevice(String contractId);

}
